package actividades;

import org.json.JSONException;
import org.json.JSONObject;

import world.trainer.R;

import comunicacionServidor.FuncionesJSON;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class ConfiguracionActivity extends Activity {

	private String nombreJson, apellidosJson, pesoJson, alturaJson, edadJson,
			contrasenyaJson;
	private Editable nombre, peso, apellidos, altura, edad, contrasenya1,
			contrasenya2;
	private ProgressDialog dialog;
	// Buscamos las referencias de los widgets
	private EditText valNombre, valApellidos, valPeso, valAltura, valEdad,
			valContrasenya1, valContrasenya2;
	private boolean correcto;
	private static String KEY_SUCCESS = "success";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.configuracion_activity);
		dialog = ProgressDialog.show(this, "", "Cargando...", true);
		dialog.show();
		valNombre = (EditText) findViewById(R.id.valNombre);
		valApellidos = (EditText) findViewById(R.id.valApellidos);
		valPeso = (EditText) findViewById(R.id.valPeso);
		valAltura = (EditText) findViewById(R.id.valAltura);
		valEdad = (EditText) findViewById(R.id.valEdad);
		valContrasenya1 = (EditText) findViewById(R.id.valContrasenya1);
		valContrasenya2 = (EditText) findViewById(R.id.valContrasenya2);
		correcto = true;

		// Recuperamos los datos del usuario de la base de datos
		new ClaseComunicacion().execute();

		// Tratamos el evento del boton guardar
		Button guardar = (Button) findViewById(R.id.botonGuardarConfiguracion);

		guardar.setOnClickListener(new OnClickListener() {

			public void onClick(View arg0) {
				nombre = valNombre.getText();
				apellidos = valApellidos.getText();
				peso = valPeso.getText();
				altura = valAltura.getText();
				edad = valEdad.getText();
				contrasenya1 = valContrasenya1.getText();
				contrasenya2 = valContrasenya2.getText();

				if (contrasenya1.toString().equals(contrasenya2.toString())) {

					// Hacemos efectivo los cambios realizados en los datos del
					// usuario
					dialog.show();
					correcto = true;
					new ClaseComunicacion2().execute();

				} else {
					Toast toast = Toast.makeText(getApplicationContext(),
							"Las contrasenyas introducidas no coinciden",
							Toast.LENGTH_SHORT);
					toast.show();
				}
			}
		});

		// Traramos el evento del boton cancelar
		Button cancelar = (Button) findViewById(R.id.botonCancelarConfiguracion);

		cancelar.setOnClickListener(new OnClickListener() {

			public void onClick(View arg0) {
				finish();
				Intent intent = new Intent(getApplicationContext(),
						MainActivity.class);
				Bundle bundle = new Bundle();
				bundle.putString("ACTIVITY", "configuracion");
				intent.putExtras(bundle);
				intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
				startActivity(intent);
			}

		});

	}

	public void onBackPressed() {

		finish();
		Intent intent = new Intent(getApplicationContext(), MainActivity.class);
		Bundle bundle = new Bundle();
		bundle.putString("ACTIVITY", "configuracion");
		intent.putExtras(bundle);
		intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
		startActivity(intent);

	}

	public class ClaseComunicacion extends AsyncTask<Void, Void, Void> {
		FuncionesJSON funcion = new FuncionesJSON();
		JSONObject json = new JSONObject();

		@Override
		protected Void doInBackground(Void... params) {
			try {
				json = funcion.misDatos();

			} catch (Exception e) {
				e.printStackTrace();
				correcto = false;
			}

			return null;
		}

		@Override
		protected void onPostExecute(Void result) {
			dialog.dismiss();
			if (correcto) {
				try {
					if (json.getString(KEY_SUCCESS) != null) {
						String res = json.getString(KEY_SUCCESS);
						if (Integer.parseInt(res) == 1) {
							nombreJson = json.getString("nombre");
							apellidosJson = json.getString("apellidos");
							alturaJson = json.getString("altura");
							pesoJson = json.getString("peso");
							edadJson = json.getString("edad");
							contrasenyaJson = json.getString("contrasenya");

							// Mostramos los datos del usuario
							valNombre.setText(nombreJson);
							valApellidos.setText(apellidosJson);
							valPeso.setText(pesoJson);
							valAltura.setText(alturaJson);
							valEdad.setText(edadJson);
							valContrasenya1.setText(contrasenyaJson);
						} else {
							Toast toast = Toast.makeText(
									getApplicationContext(),
									"No se ha podido recuperar la informacion",
									Toast.LENGTH_SHORT);
							toast.show();
						}
					} else {
						Toast toast = Toast.makeText(getApplicationContext(),
								"No se ha podido recuperar la informacion",
								Toast.LENGTH_SHORT);
						toast.show();
					}
				} catch (NumberFormatException e) {
					e.printStackTrace();
					Toast toast = Toast.makeText(getApplicationContext(),
							"No se ha podido recuperar la informacion",
							Toast.LENGTH_SHORT);
					toast.show();
				} catch (JSONException e) {
					e.printStackTrace();
					Toast toast = Toast.makeText(getApplicationContext(),
							"No se ha podido recuperar la informacion",
							Toast.LENGTH_SHORT);
					toast.show();
				}
			} else {
				Toast toast = Toast.makeText(getApplicationContext(),
						"No se ha podido recuperar la informacion",
						Toast.LENGTH_SHORT);
				toast.show();
			}
		}
	}

	public class ClaseComunicacion2 extends AsyncTask<Void, Void, Void> {

		FuncionesJSON funcion = new FuncionesJSON();
		JSONObject json = new JSONObject();

		@Override
		protected Void doInBackground(Void... params) {
			try {

				json = funcion.guardarMisNuevosDatos(nombre.toString(),
						apellidos.toString(), altura.toString(),
						edad.toString(), peso.toString(),
						contrasenya1.toString());

			} catch (Exception e) {
				correcto = false;
			}
			return null;
		}

		@Override
		protected void onPostExecute(Void result) {
			dialog.dismiss();
			if (correcto) {
				try {
					if (json.getString(KEY_SUCCESS) != null) {
						String res = json.getString(KEY_SUCCESS);
						if (Integer.parseInt(res) == 1) {
							Intent intent = new Intent(getApplicationContext(),
									MainActivity.class);
							Bundle bundle = new Bundle();
							bundle.putString("ACTIVITY", "configuracion");
							intent.putExtras(bundle);
							startActivity(intent);
						} else {
							Toast toast = Toast.makeText(
									getApplicationContext(),
									"No se ha podido guardar los cambios",
									Toast.LENGTH_SHORT);
							toast.show();
						}
					} else {
						Toast toast = Toast.makeText(getApplicationContext(),
								"No se ha podido guardar los cambios",
								Toast.LENGTH_SHORT);
						toast.show();
					}
				} catch (NumberFormatException e) {
					e.printStackTrace();
					Toast toast = Toast.makeText(getApplicationContext(),
							"No se ha podido guardar los cambios",
							Toast.LENGTH_SHORT);
					toast.show();
				} catch (JSONException e) {
					e.printStackTrace();
					Toast toast = Toast.makeText(getApplicationContext(),
							"No se ha podido guardar los cambios",
							Toast.LENGTH_SHORT);
					toast.show();
				}
			} else {
				Toast toast = Toast.makeText(getApplicationContext(),
						"No se ha podido guardar los cambios",
						Toast.LENGTH_SHORT);
				toast.show();
			}
		}
	}

	public void onPause() {

		finish();
		super.onPause();
		Intent intent = new Intent(getApplicationContext(), MainActivity.class);
		Bundle bundle = new Bundle();
		bundle.putString("ACTIVITY", "configuracion");
		intent.putExtras(bundle);
		intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
		startActivity(intent);
	}
}
